------SERVER PREFERENCES------
You can change the server and bot settings for Classic Bots from the file 'serverPrefs.cs' in the folder 'GameData\ClassicBots\prefs.' This is also where you can activate RPG mode. I recommend leaving most values at their default but you can tweak them if you wanna make the bots easier, harder, or mess with other stuff. 

------VERY IMPORTANT TIP FOR RUNNING A DEDICATED SERVER------
If you intend to host a dedicated server and also play on it by joining your own server from the same machine (basically, running multiple Tribes2.exe instances), then I STRONGLY recommend looking at the end of this document for instructions on how to do it properly, or else your bots will act stupid in subtle ways.

_______________________________________________________________________________
Here's what some 'serverPrefs.cs' settings do:
_______________________________________________________________________________

$Host::BotDifficulty
	--The value can be "Easy", "Medium", "Hard", or "Custom". In case you don't want to waste time configuring all the bot preferences yourself, this is the quickest way of changing the bot difficulty. This option will tweak some preferences to make the bots more difficult or easy. Their moving speed, population, team balancing, objective priorities, etc. will be affected. The settings that will be altered by this option are: RebalanceTeamBots, HumanWeightAloneBonus, BotHumanBalanceWeight, Bot_Capper_Boost_Active, Bot_Chaser_Boost_Active, Bot_Chase_Speed, Bot_Cap_Speed, AdaptiveCTFBots, MapDesiredBots (adds +1 bots on Medium difficulty). Leaving this setting to "Custom" will not alter the values previously mentioned, but instead leave them under your control. The default "Custom" difficulty that the bots come with is actually "Hard" difficulty with the freedom to turn off some of the settings previously mentioned.

$Host::KickBotsActivated 
	--Values: 0 or 1. This will enable kicking bots once at least two humans are on the server, if AllowDynamicBotCount is also active.--

$Host::KickedBotsPerHuman 
	--If KickBotsActivated is activated and there are at least two humans in the server, this is the number of bots that will be kicked for each human in the server. A minimum limit of 2 bots on the server is enforced. If some humans leave the server, the bots will rejoin.--

$Host::MapRecords 
	--Only if $Host::RPG_Active is turned off, this feature will enable records per map and gametype for most midairs, most killing sprees (kills until you die), and another gametype related stat. If you want to clear the stats, clear or delete your 'MapRecords.cs' file from 'GameData\ClassicBots\prefs'--

$Host::MapRecordsShowText 
	--Each time someone sets a new record, a text message in the top left chatbox will be shown, if this is active.--

$Host::MapRecordsMsgDuration 
	--When someone spawns in a map for the first time, this is how long the map records will be shown to that player, in seconds.---

$Host::ResetServerOnNoPlayers
	--If this is ON and all human players have left the game the server will reset. If this is off, bots will keep playing until the end of the current map.--

$Host::AdaptiveCTFBots
	--If RebalanceTeamBots is on, this will make CTF bots that have humans in their team focus a bit less on deploying and defending the flag if that human team is winning. I recommend that you leave this on.--

$Host::AllowDynamicBotCount
	--If you turn this on, bots will leave and enter the game depending on each map's desired bot number. If it's off, the game will always have the same number of bots.--

$Host::MapDesiredBotsMAPNAME
	--This specifies the desired number of bots for a map if AllowDynamicBotCount is ON. Don't make this higher than 31 for Siege maps.--

$Host::Bot_Capper_Boost_Active 
	--This will greatly increase the capper bots' movement speed compared to the default game, so it makes the game more fair as bots can't ski.--

$Host::Bot_Cap_Speed 
	--Max value = 1. If Bot_Capper_Boost_Active is ON, this determines the speed at which a capper bot goes back home with the flag.--

$Host::Bot_Chaser_Boost_Active 
	--This will greatly increase the flag carrier chasing bots' movement speed compared to the default game, so it makes the game more fair as bots can't ski.--

$Host::Bot_Chase_Speed 
	--Max value = 1. If Bot_Chaser_Boost_Active is ON, this determines the speed at which a flag carrier chasing bot follows its HUMAN target.--

$Host::RebalanceTeamBots 
	--If this is on, some bots will switch to the other team when you join the match to make the game more fair.--

$Host::BotHumanBalanceWeight 
	--If RebalanceTeamBots is on, the higher this value is, the more bots switch to your enemy team when you join the match.--

$Host::HumanWeightAloneBonus 
	--If RebalanceTeamBots is on, this adds additional bot-switching weight when there's just one human playing on the server.--

$Host::BotsChatRandomSounds 
	--Determines if the bots randomly play sounds from the Osiris Voice Pack. You need to install the sounds to hear them. Profanity/adult language included.--

$Host::BotsChatTextVoice
	--Determines if bots randomly text chat, sometimes even playing some sounds from the game. Profanity/adult language included. --

$Host::Siege_TimeLimit 
$Host::CTF_TimeLimit 
$Host::Hunters_TimeLimit 
$Host::TeamHunters_TimeLimit 
$Host::Lak_Rabbit_TimeLimit 
$Host::Deathmatch_TimeLimit 
$Host::CnH_TimeLimit 
	--All gametypes now have a separate time limit. Change the time limits from these settings.--

$Host::LakRabbitNoSplashDamage 
$Host::LakRabbitDuelMode 
	--Settings to enable Duel Mode or Splash Damage in LAK Rabbit.--

$Host::ClassicAutoRestartServer
	--If you want the server to automatically restart after a while.--

$Host::ClassicRestartTime    
	--If automatic server restart is enabled, this defines the number of hours until the server restarts itself.--

$Host::RotationStyle = "Linear";
	--Sets the map rotation mode. This can be either "Linear" which is ordered, or it can be "Random".--

$Host::MapRotationFile 
	--The location of a list of maps that run in a specific order on the server. Maps can be disabled by adding two slashes (//) before the map names.--

$Host::HumanRespawnDelay
	--Additional respawn delay for humans only, not bots. Can be any value above 1. By default in Classic it's 2. 

_______________________________________________________________________________
RPG Mode Settings:
_______________________________________________________________________________

[-NOTE-] By default, the RPG settings are tweaked so that the leveling progression and item drop rates work well for a week, because stats get reset every week. If you want to have more of a permanent RPG mode read the 'RPG Mode - How to enable a permanent RPG mode?' section.

RPG Mode Settings:

$Host::RPG_Active
	--If RPG mode is active or not. And if it's on, there are some RPG settings bellow.--

$Host::RPG_Allow_Reset 
	--Allow the server to reset everyone's stats every 7 days?--

$Host::RPG_Allow_Top_Players_Reset 
	--Allow the server to reset the TOP 3 players scoreboard every 7 days? If yes, they also get awards on every reset.--

$Host::RPG_Max_Bot_Lvl 
$Host::RPG_Min_Bot_Lvl 
	--Self explanatory. I recommend not making the max bot level higher than 30.--

$Host::RPG_Consumable_Drop_Rate
	--Consumable items droprate from killing, repairing, destroying, capping, etc.--

$Host::RPG_Equip_Drop_Rate 
	--Equipment items droprate from killing, repairing, destroying, capping, etc.--

$Host::RPG_EXP_Rate 
	--The default EXP rate of the server. I recommend not making this lower than 1.--

$Host::RPG_EXP_to_level_up 
	--Required EXP to level up the first time. This gets increased by 10% on every level.--

$Host::RPG_Event_Small_Exp_Rate 
	--When the slightly higher EXP rate event is active, the EXP rate multiplier will be INCREASED by this value.--

$Host::RPG_Event_Big_Exp_Rate
	--When the even higher EXP rate event is active, the EXP rate multiplier will be INCREASED by this value.--

$Host::RPG_Event_Cons_Drop_Rate 
	--When the consumable droprate event is active, the consumable drop rate multiplier will be INCREASED by this value.--

$Host::RPG_Event_Equip_Drop_Rate 
	--When the equipment parts droprate event is active, the equipment parts drop rate multiplier will be INCREASED by this value.--

$Host::RPG_Event_More_Bot_lvls 
	--When the equipment parts droprate event is active, the maximum level of bots will be INCREASED by this value.--

$Host::RPG_Force_Server_Reset 
	--This will make the server reset the TOP 3 Players scoreboard next time a player joins. And also everyone who joins will have their stats reset. The server will also start again on Day 1.--

$Host::RPG_Join_Message_Duration 
	--This gets multiplied by 3 and decreased on each respawn. It shows someone who just joined that RPG mode is on and also the key to display stats.--


_______________________________________________________________________________
RPG Mode - How to enable a permanent RPG mode? :
_______________________________________________________________________________

If you want to increase the duration required to reach maximum level to a few weeks or even months, and drastically reduce the droprate of equipment parts so that it will take a long time to get them all, and you want everyone's stats to NOT be reset every week, then read on. In this example  we'll make leveling require x10 more grinding and equipment drops will be x10 rarer than the default 1-Week rates. Alter the following settings to these suggested values:

1. Increase $Host::RPG_EXP_to_level_up from 100 to 1000. You can make it way bigger if you want to but it will take a long time to level up.

2. Decrease $Host::RPG_Equip_Drop_Rate from 0.02 to 0.01. You can only have a maximum of 2 numbers after the decimal for the droprate system to be effective, so the minimum value of ANY drop rates, including consumables, is 0.01. 

3. Increase $Host::RPG_Event_Big_Exp_Rate from 0.5 to 1. This is because if RPG_Equip_Drop_Rate is normally 0.01, during the Equipment Droprate Event it will be 0.02. We can only have 2 numbers at max after the decimal for the droprate system to be effective. If you want to always make Equipment parts drop at the same rate even during the Equipment event, just disable the increased event rates by setting $Host::RPG_Event_Big_Exp_Rate to 0. 

4. Set $Host::RPG_Allow_Top_Players_Reset and $Host::RPG_Allow_Reset to 0. No sense in resetting the player stats or rewarding the top 3 players every single week if you want a permanent type of progression.

Play with these values to make the character progression last as long as you want to, and maybe even change the consumable item rates if you feel they're too high.


_______________________________________________________________________________
Do NOT change the following settings. I altered some of the next settings to
make the bots/mod work better. Changing some of these might make the mod not work 
as intended. So please, just leave the following settings at their default values:
_______________________________________________________________________________

$Host::ClassicBalancedBots = 0;
$Host::ClassicFairTeams = 0;
$Host::warmupTime = "0";
$Host::NoSmurfs = 0;
$Host::VoteConquest = "0";
$Host::VoteHybridPracticeSpawn = "0";
$Host::PlayerTeamFairRandom = "0";
$Host::PlayerVoteChangeMission = "1";
$Host::PlayerVoteTournamentMode = "0";
$Host::MinBotDifficulty = "0.99";
$Host::MaxBotDifficulty = "0.99";
$Host::CRCTextures = 0;
$Host::ClassicLimitArmors = 0;
$Host::ClassicUseHighPerformanceCounter = 0;
$Host::AllowMapScript = 1;
_______________________________________________________________________________


!!! Don't forget to configure your server name and admin password.


_______________________________________________________________________________

-----------------------------PROBLEMS AND SOLUTIONS----------------------------
_______________________________________________________________________________

_______________________________________________________________________________
Max throw mine/grenade fix for players joining your Classic Bots server:
_______________________________________________________________________________

Max throw grenade/mine works if you play by yourself, but it can be a problem for people playing on your server due to how the classic client (the file zz_Classic_client_v1.vl2) works. When people join your server, their max throw grenade/mine binds won't work unless the mod they're joining is named "Classic".

If you want people who play on your server to be able to use their max throw grenade/mine binds, you must rename your "classic" folder from "GameData" to something else first. Then rename the "ClassicBots" folder "classic", so that this will replace your original "classic" mod. Then edit all the ".bat" files that came with Classic Bots so that the parts "-mod ClassicBots" are replaced by "-mod classic". To edit a bat file, right click it and click edit. 

_______________________________________________________________________________
------VERY IMPORTANT TIP FOR RUNNING A DEDICATED SERVER------
_______________________________________________________________________________
You can host a dedicated server and play from the machine if you make a copy of your game folder so that you have two installations, that is the proper way to do it.

But, if you intend to do this, hosting a dedicated server and also playing by joining your own dedicated server from the same machine (basically, running multiple Tribes2.exe instances), DO NOT change the core setting (what core the game runs on) with tools or command lines on your Tribes2.exe used to make the dedicated server. Let the game choose what core it runs by itself. 

If you want to host a dedicated server and play on it on the same machine, then do this:
	1. Edit both the "ClassicBots_Offline.bat" and "ClassicBots_Online.bat" .bat files by right clicking them then selecting Edit, or just open in a text editor.
	2. Remove the "/affinity 1" and "/abovenormal" arguments between "start" and "Tribes2.exe" so the run command looks like this: "start Tribes2.exe"
	3. Save the changes. Now when you run the game from those modified .bat filed, the core they will be run on will be handled automatically.

The reason for doing this is the following. On machines with multicore processors, Tribes 2 may look jittery and have audio distortion issues. To fix this, we start the game .exe with the "/affinity 1 /abovenormal" arguments, so that the game is limited to one core. Setting the game to run on 1 core only fixes FPS jitter or audio distortion issues. I already included these arguments in "ClassicBots_Offline.bat" and "ClassicBots_Online.bat" so that you don't have to type it yourself. But I did not include the arguments in the .bat files for dedicated servers because weird things happen with bots when you use these arguments on dedicated servers, it screws up the dedicated server bots in subtle ways. You can observe this weird behavior in the siege map Military Industrial Complex by looking at the Attacking/Offense team bot behavior. If the HAVOC bots jump in the heavy transport vehicle mostly in light armor and with no pack, something is messed it up. The normal behavior is for the HAVOC bots to properly equip themselves with at least a pack and mostly medium/heavy armor. This is just one way in they are acting stupid from the core setting.

The issue also occurs if your dedicated server core setting is not changed, but you changed the core setting for another running instance of Tribes 2 on the same machine. For example, if you're trying to host and play from the same machine and you altered a core setting for a Tribes2.exe file, this issue will occur again. You do not need to worry about this issue if you start a non-dedicated game/server, online or offline, even if you change core settings for that instance. The issue only happens when one of the two instances running from the same machine has core settings altered while a dedicated server is running, or when you change the dedicated server core settings.

_______________________________________________________________________________
My batch files (.bat) used to start Classic Bots are getting deleted whenever I try to run them!
_______________________________________________________________________________

Your antivirus/windows defender treats .bat files as a security risk. Despite the fact that the only commands written in the batch files included here are to clean your DSOs and launch Classic Bots, your antivirus still deletes the files as a security measure. To prevent this just add your Tribes 2 install folder to your antivirus's "Exclusion" list. If you want to make sure that nothing suspicious is hidden in the batch files, you can right click them, click EDIT, and see for yourself. Check if you're missing the 4 batch files included in the mod: ClassicBots_Offline.bat, ClassicBots_Dedicated_Server_Offline.bat, etc.. Some antiviruses might delete those before you even have a chance to run them.



